home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / distutils / command / install_lib.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  6KB  |  168 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. __revision__ = '$Id: install_lib.py,v 1.44 2004/11/10 22:23:15 loewis Exp $'
  5. import sys
  6. import os
  7. import string
  8. from types import IntType
  9. from distutils.core import Command
  10. from distutils.errors import DistutilsOptionError
  11. PYTHON_SOURCE_EXTENSION = os.extsep + 'py'
  12.  
  13. class install_lib(Command):
  14.     description = 'install all Python modules (extensions and pure Python)'
  15.     user_options = [
  16.         ('install-dir=', 'd', 'directory to install to'),
  17.         ('build-dir=', 'b', 'build directory (where to install from)'),
  18.         ('force', 'f', 'force installation (overwrite existing files)'),
  19.         ('compile', 'c', 'compile .py to .pyc [default]'),
  20.         ('no-compile', None, "don't compile .py files"),
  21.         ('optimize=', 'O', 'also compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]'),
  22.         ('skip-build', None, 'skip the build steps')]
  23.     boolean_options = [
  24.         'force',
  25.         'compile',
  26.         'skip-build']
  27.     negative_opt = {
  28.         'no-compile': 'compile' }
  29.     
  30.     def initialize_options(self):
  31.         self.install_dir = None
  32.         self.build_dir = None
  33.         self.force = 0
  34.         self.compile = None
  35.         self.optimize = None
  36.         self.skip_build = None
  37.  
  38.     
  39.     def finalize_options(self):
  40.         self.set_undefined_options('install', ('build_lib', 'build_dir'), ('install_lib', 'install_dir'), ('force', 'force'), ('compile', 'compile'), ('optimize', 'optimize'), ('skip_build', 'skip_build'))
  41.         if self.compile is None:
  42.             self.compile = 1
  43.         
  44.         if self.optimize is None:
  45.             self.optimize = 0
  46.         
  47.         if type(self.optimize) is not IntType:
  48.             
  49.             try:
  50.                 self.optimize = int(self.optimize)
  51.                 if self.optimize <= self.optimize:
  52.                     pass
  53.                 elif not self.optimize <= 2:
  54.                     raise AssertionError
  55.             except (ValueError, AssertionError):
  56.                 raise DistutilsOptionError, 'optimize must be 0, 1, or 2'
  57.             except:
  58.                 None<EXCEPTION MATCH>(ValueError, AssertionError)
  59.             
  60.  
  61.         None<EXCEPTION MATCH>(ValueError, AssertionError)
  62.  
  63.     
  64.     def run(self):
  65.         self.build()
  66.         outfiles = self.install()
  67.         if outfiles is not None and self.distribution.has_pure_modules():
  68.             self.byte_compile(outfiles)
  69.         
  70.  
  71.     
  72.     def build(self):
  73.         if not self.skip_build:
  74.             if self.distribution.has_pure_modules():
  75.                 self.run_command('build_py')
  76.             
  77.             if self.distribution.has_ext_modules():
  78.                 self.run_command('build_ext')
  79.             
  80.         
  81.  
  82.     
  83.     def install(self):
  84.         if os.path.isdir(self.build_dir):
  85.             outfiles = self.copy_tree(self.build_dir, self.install_dir)
  86.         else:
  87.             self.warn("'%s' does not exist -- no Python modules to install" % self.build_dir)
  88.             return None
  89.         return outfiles
  90.  
  91.     
  92.     def byte_compile(self, files):
  93.         byte_compile = byte_compile
  94.         import distutils.util
  95.         install_root = self.get_finalized_command('install').root
  96.         if self.compile:
  97.             byte_compile(files, optimize = 0, force = self.force, prefix = install_root, dry_run = self.dry_run)
  98.         
  99.         if self.optimize > 0:
  100.             byte_compile(files, optimize = self.optimize, force = self.force, prefix = install_root, verbose = self.verbose, dry_run = self.dry_run)
  101.         
  102.  
  103.     
  104.     def _mutate_outputs(self, has_any, build_cmd, cmd_option, output_dir):
  105.         if not has_any:
  106.             return []
  107.         
  108.         build_cmd = self.get_finalized_command(build_cmd)
  109.         build_files = build_cmd.get_outputs()
  110.         build_dir = getattr(build_cmd, cmd_option)
  111.         prefix_len = len(build_dir) + len(os.sep)
  112.         outputs = []
  113.         for file in build_files:
  114.             outputs.append(os.path.join(output_dir, file[prefix_len:]))
  115.         
  116.         return outputs
  117.  
  118.     
  119.     def _bytecode_filenames(self, py_filenames):
  120.         bytecode_files = []
  121.         for py_file in py_filenames:
  122.             ext = os.path.splitext(os.path.normcase(py_file))[1]
  123.             if ext != PYTHON_SOURCE_EXTENSION:
  124.                 continue
  125.             
  126.             if self.compile:
  127.                 bytecode_files.append(py_file + 'c')
  128.             
  129.             if self.optimize > 0:
  130.                 bytecode_files.append(py_file + 'o')
  131.                 continue
  132.         
  133.         return bytecode_files
  134.  
  135.     
  136.     def get_outputs(self):
  137.         '''Return the list of files that would be installed if this command
  138.         were actually run.  Not affected by the "dry-run" flag or whether
  139.         modules have actually been built yet.
  140.         '''
  141.         pure_outputs = self._mutate_outputs(self.distribution.has_pure_modules(), 'build_py', 'build_lib', self.install_dir)
  142.         if self.compile:
  143.             bytecode_outputs = self._bytecode_filenames(pure_outputs)
  144.         else:
  145.             bytecode_outputs = []
  146.         ext_outputs = self._mutate_outputs(self.distribution.has_ext_modules(), 'build_ext', 'build_lib', self.install_dir)
  147.         return pure_outputs + bytecode_outputs + ext_outputs
  148.  
  149.     
  150.     def get_inputs(self):
  151.         """Get the list of files that are input to this command, ie. the
  152.         files that get installed as they are named in the build tree.
  153.         The files in this list correspond one-to-one to the output
  154.         filenames returned by 'get_outputs()'.
  155.         """
  156.         inputs = []
  157.         if self.distribution.has_pure_modules():
  158.             build_py = self.get_finalized_command('build_py')
  159.             inputs.extend(build_py.get_outputs())
  160.         
  161.         if self.distribution.has_ext_modules():
  162.             build_ext = self.get_finalized_command('build_ext')
  163.             inputs.extend(build_ext.get_outputs())
  164.         
  165.         return inputs
  166.  
  167.  
  168.